/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package managedBeans;
import entidades.Curso;
import entidades.Paquete;
import ejb.CursoEJB;
import ejb.PaqueteEJB;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
import javax.ejb.EJB;
import javax.faces.model.SelectItem;
import java.util.List;
import java.util.ArrayList;
import javax.faces.convert.Converter;
import javax.faces.convert.FacesConverter;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import managedBeans.util.JsfUtil;

/**
 *
 * @author Renato
 */
@ManagedBean(name="CursoController")
@RequestScoped
public class CursoController {
    private Curso actual = new Curso();;
    @EJB
    private CursoEJB cursoEJB;
    @EJB
    private PaqueteEJB paqueteEJB;
    /** Creates a new instance of CursoController */
    public CursoController() {
       
    }

    public Curso getActual() {
        return actual;
    }

    public void setActual(Curso actual) {
        this.actual = actual;
    }

    public CursoEJB getCursoEJB() {
        return cursoEJB;
    }

    public void setCursoEJB(CursoEJB cursoEJB) {
        this.cursoEJB = cursoEJB;
    }

    public void addCurso(){
      
        cursoEJB.create(actual);
        actual = null;
        JsfUtil.addSuccessMessage("cursoAgregado");
    }

    public List<SelectItem> getPaquetes(){
        List<SelectItem> items = new ArrayList<SelectItem>();
        List<Paquete> paquetes =  paqueteEJB.findAll();
        for(Paquete pq:paquetes){
            items.add(new SelectItem(pq,pq.getIdPaquete()+" - "+pq.getNombrePaquete()));
        }
        return items;
    }
    public String editarCurso(Curso curso){
        actual = curso;
        return "editarCurso";
    }
    public void doEditarCurso(){
        cursoEJB.edit(actual);
        actual = null;
        JsfUtil.addSuccessMessage("cursoActualizado");
    }

    public void doEliminarCurso(Curso curso){
        cursoEJB.remove(curso);
        JsfUtil.addSuccessMessage("cursoEliminado");
    }

    public List<Curso> getCursos(){
        return cursoEJB.findAll();
    }

    @FacesConverter(forClass=Paquete.class)
    public static class PaqueteConverter implements Converter{
        public Object getAsObject(FacesContext facesContext, UIComponent component, String value){
            if(value == null || value.length() == 0){
                return null;
            }
            CursoController controlador = (CursoController)facesContext.getApplication().getELResolver().
                    getValue(facesContext.getELContext(), null, "CursoController");
            return controlador.paqueteEJB.find(value);
        }
         public String getAsString(FacesContext facesContext,
                              UIComponent uiComponent,
                              Object obj) {
             if (obj == null) {
                return null;
                }
             if(obj instanceof Paquete){
                Paquete pq = (Paquete)obj;
                return pq.getIdPaquete();
             }else{
                throw new IllegalArgumentException("Se espera de tipo paquete");
             }
         }

    }



}
